//返回所有通过真理测试的元素。
//别名为“select”。

import { Io } from "../object/extendOwn";
import { cb } from "../util/iteratee";
import each from "./each";


export default function filter<T>(obj: { [key: string]: T, [key: number]: T } | T[], func: (value: T, index: string | number, obj: { [key: string]: T, [key: number]: T } | T[]) => boolean, context?) {
  var results: T[] = []
  func = cb(func, context);
  each(obj, function (value, index, list) {
    if (func(value, index, list)) results.push(value)
  })
  return results
}  